package com.lou.annotation.support;

import java.lang.reflect.Method;

import com.lou.annotation.Init;
import com.lou.enity.User;

/**
 * @author : ljl
 * @date 创建时间：2018年9月11日 上午10:00:20
 * @version 1.0
 * @parameter
 * @since
 * @return
 */
public class UserFactory {

	public static void main(String[] args) {
		User user = UserFactory.create();
		System.out.println(user.getName());
		System.out.println(user.getAge());
	}

	public static User create() {

		User user = new User();

		// 获取User类中所有的方法（getDeclaredMethods也行）
		Method[] methods = User.class.getMethods();
		try {
			for (Method method : methods) {
				// 如果此方法有注解，就把注解里面的数据赋值到user对象
				if (method.isAnnotationPresent(Init.class)) {
					Init init = method.getAnnotation(Init.class);
					method.invoke(user, init.value());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}

		return user;
	}
	
}
